using OneCaps.Core.Enum;

namespace OneCaps.Core.DTO
{
    /// <summary>
    /// 车辆DTO
    /// </summary>
    public class VehicleDto
    {
        /// <summary>
        /// 车辆ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 车牌号
        /// </summary>
        public string LicensePlate { get; set; } = string.Empty;

        /// <summary>
        /// 车辆类型
        /// </summary>
        public VehicleType Type { get; set; }

        /// <summary>
        /// 车辆品牌
        /// </summary>
        public string? Brand { get; set; }

        /// <summary>
        /// 车辆型号
        /// </summary>
        public string? Model { get; set; }

        /// <summary>
        /// 车辆颜色
        /// </summary>
        public string? Color { get; set; }

        /// <summary>
        /// 车主姓名
        /// </summary>
        public string? OwnerName { get; set; }

        /// <summary>
        /// 车主电话
        /// </summary>
        public string? OwnerPhone { get; set; }

        /// <summary>
        /// 是否VIP车辆
        /// </summary>
        public bool IsVip { get; set; }

        /// <summary>
        /// 注册时间
        /// </summary>
        public DateTime RegisterTime { get; set; }

        /// <summary>
        /// 最后入场时间
        /// </summary>
        public DateTime? LastEntryTime { get; set; }

        /// <summary>
        /// 是否正在停车
        /// </summary>
        public bool IsParking { get; set; }

        /// <summary>
        /// 当前停车记录ID
        /// </summary>
        public int? CurrentParkingRecordId { get; set; }
    }

    /// <summary>
    /// 车辆创建DTO
    /// </summary>
    public class CreateVehicleDto
    {
        /// <summary>
        /// 车牌号
        /// </summary>
        public string LicensePlate { get; set; } = string.Empty;

        /// <summary>
        /// 车辆类型
        /// </summary>
        public VehicleType Type { get; set; } = VehicleType.Private;

        /// <summary>
        /// 车辆品牌
        /// </summary>
        public string? Brand { get; set; }

        /// <summary>
        /// 车辆型号
        /// </summary>
        public string? Model { get; set; }

        /// <summary>
        /// 车辆颜色
        /// </summary>
        public string? Color { get; set; }

        /// <summary>
        /// 车主姓名
        /// </summary>
        public string? OwnerName { get; set; }

        /// <summary>
        /// 车主电话
        /// </summary>
        public string? OwnerPhone { get; set; }

        /// <summary>
        /// 是否VIP车辆
        /// </summary>
        public bool IsVip { get; set; } = false;
    }

    /// <summary>
    /// 车辆更新DTO
    /// </summary>
    public class UpdateVehicleDto
    {
        /// <summary>
        /// 车辆类型
        /// </summary>
        public VehicleType? Type { get; set; }

        /// <summary>
        /// 车辆品牌
        /// </summary>
        public string? Brand { get; set; }

        /// <summary>
        /// 车辆型号
        /// </summary>
        public string? Model { get; set; }

        /// <summary>
        /// 车辆颜色
        /// </summary>
        public string? Color { get; set; }

        /// <summary>
        /// 车主姓名
        /// </summary>
        public string? OwnerName { get; set; }

        /// <summary>
        /// 车主电话
        /// </summary>
        public string? OwnerPhone { get; set; }

        /// <summary>
        /// 是否VIP车辆
        /// </summary>
        public bool? IsVip { get; set; }
    }

    /// <summary>
    /// 车辆查询DTO
    /// </summary>
    public class VehicleQueryDto
    {
        /// <summary>
        /// 车牌号（模糊查询）
        /// </summary>
        public string? LicensePlate { get; set; }

        /// <summary>
        /// 车辆类型
        /// </summary>
        public VehicleType? Type { get; set; }

        /// <summary>
        /// 是否VIP
        /// </summary>
        public bool? IsVip { get; set; }

        /// <summary>
        /// 是否正在停车
        /// </summary>
        public bool? IsParking { get; set; }

        /// <summary>
        /// 车主姓名（模糊查询）
        /// </summary>
        public string? OwnerName { get; set; }

        /// <summary>
        /// 页码
        /// </summary>
        public int Page { get; set; } = 1;

        /// <summary>
        /// 页大小
        /// </summary>
        public int PageSize { get; set; } = 20;
    }
} 